package com.cskaoyan.service;

import com.cskaoyan.bean.bo.AdListBO;
import com.cskaoyan.bean.bo.CouponCreateBO;
import com.cskaoyan.bean.param.BaseParam;
import com.cskaoyan.bean.pojo.MarketCoupon;
import com.cskaoyan.bean.pojo.MarketCouponUser;
import com.cskaoyan.bean.pojo.MarketUser;
import com.cskaoyan.bean.vo.CouponListVO;
import com.cskaoyan.bean.vo.CouponListuserVO;
import com.cskaoyan.bean.vo.WxMyCouponListVO;

public interface CouponService {

    // 后台管理系统：陈旭
    CouponListVO list(AdListBO adListBO);

    void delete(Integer id);

    MarketCoupon read(Integer id);

    CouponListuserVO listuser(AdListBO adListBO);

    MarketCoupon update(CouponCreateBO marketCoupon);

    MarketCoupon create(CouponCreateBO marketCoupon);


    // 微信小程序端：成文琪

    /**
     * 所有优惠券列表 wx/coupon/list（不用登录）
     * 创建日期：2022/04/10 23:34
     * @param  param 分页信息
     * @return com.cskaoyan.bean.vo.CouponListVO
     * @author ChengWenqi
     */
    CouponListVO queryCouponList(BaseParam param);

    /**
     * 更新过期的优惠券status
     * 创建日期：2022/04/11 11:08
     * @param
     * @return void
     * @author ChengWenqi
     */
    void updateCouponStatus();

    /**
     * 更新用户的优惠券状态（已过期）
     * 创建日期：2022/04/11 12:07
     * @param
     * @return void
     * @author ChengWenqi
     */
    void updateUserCouponStatus(MarketUser user);

    /**
     * 用户登录后，获取各种状态的优惠券信息
     * 创建日期：2022/04/11 11:42
     * @param  param 分页信息
     * @param  status 优惠券状态
     * @param  user 用户信息
     * @return com.cskaoyan.bean.vo.CouponListVO
     * @author ChengWenqi
     */
    WxMyCouponListVO queryMyCouponList(BaseParam param, short status, MarketUser user);

    /**
     * 用户领取优惠券
     * 创建日期：2022/04/11 13:20
     * @param  couponUser 包含优惠券id
     * @param  user 用户信息
     * @return int
     * @author ChengWenqi
     */
    int couponReceive(MarketCouponUser couponUser, MarketUser user);

    /**
     * 用户在个人中心的优惠券页面，输入兑换码，兑换优惠券
     * 创建日期：2022/04/11 14:34
     * @param  code 兑换码
     * @param  user 用户信息
     * @return int 返回状态码：200-成功，742-兑换码不正确，740-优惠券数量不够/已达领取上限
     * @author ChengWenqi
     */
    int couponExchange(String code, MarketUser user);

    /**
     * 用户在下单的时候，选择可用的优惠券
     * 创建日期：2022/04/11 15:11
     * @param  cartId 如果是0，表示购物车中所有选中的商品，如果非0，表示购物车id
     * @param user 用户信息
     * @return com.cskaoyan.bean.vo.WxMyCouponListVO
     * @author ChengWenqi
     */
    WxMyCouponListVO queryMySelectCouponList(Integer cartId, MarketUser user);
}
